package com.qf.taobei.mapper;

import com.qf.taobei.entity.*;
import com.qf.taobei.entity.vo.ProductVo;
import com.qf.taobei.entity.vo.ViewProduct;
import com.qf.taobei.entity.vo.ViewProductType;
import org.apache.ibatis.annotations.Param;
import com.qf.taobei.entity.vo.ProductVo2;

import java.util.List;

@SuppressWarnings("all")

public interface ProductMapper {
    /**
     * 获取所有商品
     *
     * @return
     */
    List<ProductVo> queryAllProduct();

    /**
     * 根据ID查询单个商品信息(前端使用)
     *
     * @param id
     * @return
     */
    ProductVo queryProductByIdForAfter(Integer id);

    /**
     * 根据ID查询单个商品信息(前端使用)
     *
     * @param id
     * @return
     */
    ProductVo queryProductByIdForFront(Integer id);

    /**
     * 根据类别父ID查询商品
     * @param id
     * @return
     */
    List<ProductVo2> queryProductByParentId(Integer id);

    /**
     * 添加商品
     *
     * @param product
     * @return
     */
    Integer addProduct(Product product);

    /**
     * 根据 ID 修改商品
     *
     * @return
     */
    Integer updateProductById(Product product);

    /**
     * 根据 ID 删除商品
     *
     * @return
     */
    Integer delProductById(Long id);

    /**
     * 根据ID批量删除商品
     *
     * @param id
     * @return
     */
    Integer delProductByIdList(List idList);

    /**
     * 模糊查找
     *
     * @return
     */
    List<ProductVo> queryProductByDim(Dim dim);

    /**
     * 把图片信息存储到数据库
     *
     * @param picture
     * @return
     */
    int addPictureToDB(Picture picture);


    /**
     * 根据商品ID查找相关的图片
     * @param id
     * @return
     */
    List<Picture> queryPictureByProductId(Integer id);

    /**
     * 根据商品ID查找相关评价
     * @param id
     * @return
     */
    List<Comment> queryCommentByProductId(Integer id);

    /**
     * 根据商品状态查询商品
     * @param flag
     * @return
     */
    List<ProductVo> getProductListByFlag(@Param("flag") String flag);

    /**
     * 根据商品ID修改商品状态
     * @param flag
     * @return
     */
    Integer updateProductFlag(@Param("id") Integer id,@Param("flag") Integer flag);

    /**
     * 根据店铺ID获取商品
     * @param storeId
     * @return
     */
    List<ProductVo> queryProductByStoreId(Integer storeId);




    //根据类型级别查询商品类型
    List<ViewProductType> queryProductTypeById(int id);


    //查询同一父级的商品
    List<ViewProduct> getProductByParentId(int parentId);

    //根据商品类型ID查询商品类型信息
    ViewProductType qeuryProductById(Integer id);

    Integer deleteProductByPId(Long id);


    /**陈日添
     * 分页获取数据
     * @param page 页数
     * @param limit 每页查询量
     * @return
     */
    List<ProductVo> queryProductLimit(@Param("flag")Integer flag,@Param("uid")int uid,@Param("page") int page,@Param("limit") int limit);

    /**陈日添
     * 根据店铺id分页获取数据
     * @param flag
     * @param storeId
     * @param page
     * @param limit
     * @return
     */
    List<ProductVo> queryProductLimitByStoreId(@Param("flag")Integer flag,@Param("storeId")int storeId,@Param("page") int page,@Param("limit") int limit);

    /**陈日添
     * 根据类别父ID查询商品
     * @param id
     * @return
     */
    List<ProductVo> queryProductByTypeId(@Param("flag")Integer flag,@Param("id") Integer id,@Param("page")int page,@Param("limit")int limit,@Param("uid")int uid);

    /**陈日添
     * 根据类别父ID和店铺id查询商品
     * @param id
     * @return
     */
    List<ProductVo> queryProductByTypeIdAndStoreId(@Param("flag")Integer flag,@Param("id") Integer id,@Param("page")int page,@Param("limit")int limit,@Param("storeId")int storeId);



}
